package com.jiang.daily.Q2610;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Jiang
 * @version 1.0
 * @date 2025/03/19 21:44
 */
class Solution {
//    public List<List<Integer>> findMatrix(int[] nums) {
//         Map<Integer, Integer> map = new HashMap<>();
//         for (int num: nums) {
//             map.put(num, map.getOrDefault(num, 0) + 1);
//         }

//         List<List<Integer>> res = new ArrayList<>();

    //         while (!map.isEmpty()) {
//             List<Integer> list = new ArrayList<>();
//             Iterator<Map.Entry<Integer, Integer>> iterator = map.entrySet().iterator();
//             while (iterator.hasNext()) {
//                 Map.Entry<Integer, Integer> entry = iterator.next();
//                 list.add(entry.getKey());
//                 entry.setValue(entry.getValue() - 1);
//                 if (entry.getValue() == 0)
//                     iterator.remove();
//             }
//             res.add(list);
//         }
//         return res;
//     }
    public List<List<Integer>> findMatrix(int[] nums) {
        List<List<Integer>> res = new ArrayList<>();
        int[] cnt = new int[nums.length + 1];
        for (int n: nums) {
            if (cnt[n] == res.size()) {
                res.add(new ArrayList());
            }
            res.get(cnt[n]).add(n);
            cnt[n]++;
        }
        return res;
    }
}
